/*
 * @Author: qiuz
 * @Date: 2018-06-19 11:16:40
 * */

import CryptoJS from 'crypto-js';

// des加密
export const encryptByDES = function (message, key, iv) {
	// 把私钥转换成16进制的字符串
	let keyHex = CryptoJS.enc.Utf8.parse(key);
	let ivHex = CryptoJS.enc.Utf8.parse(iv);
	// 模式为ECB padding为Pkcs7
	// TripleDES
	let encrypted = CryptoJS.DES.encrypt(message, keyHex, {
		iv: ivHex,
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.Pkcs7
	});
	// 加密出来是一个16进制的字符串
	return encrypted.toString();
};
// 解密
export const decryptByDESModeEBC = function (ciphertext, key, iv) {
	// 把私钥转换成16进制的字符串
	let keyHex = CryptoJS.enc.Utf8.parse(key);
	let ivHex = CryptoJS.enc.Utf8.parse(iv);
	// 把需要解密的数据从16进制字符串转换成字符byte数组
	let decrypted = CryptoJS.DES.decrypt(
		{
			ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
		},
		keyHex,
		{
			iv: ivHex,
			mode: CryptoJS.mode.CBC,
			padding: CryptoJS.pad.Pkcs7
		}
	);
	// 以utf-8的形式输出解密过后内容
	let result_value = decrypted.toString(CryptoJS.enc.Utf8);
	return result_value;
};
// 这个默认是32位的
export const md5Encode = function (str) {
	return CryptoJS.MD5(str).toString();
};
